<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //只创建一个实例化对象，通过调用函数时输入不同的数据实现程序效果，即使多次调用构造函数，也要确保只生成一个实例化对象，不是每次调用都会生成一个新的实例化对象。
    var onlyOne = (function () {
        //构造函数部分，创建对象的各种属性
        function Tank() {
            this.dom = null
            this.pic = ''
            this.move = function () { }
        }
        //创造变量保留实例化对象
        var instance = null

        return {
            getInstance() {
                //进行判断，因为需要最终只需要一个实例化对象如果已经保存了一个，就返回当前这个对象
                if (instance) {
                    return instance
                }
                //如果没有保存对象，就用new调用构造函数创建一个对象
                else {
                    return instance = new Tank()
                }
            }
        }
        // return{
        //     getInstance(){
        //         return instance?instance:(instance=new Tank())
        //     }
        // }
        // return {
        //     getInstance() {
        //         return instance || (iinstance = new Tank())
        //     }
        // }
    })()
//( )表示立即调用，函数调用后才生效
    var a = onlyOne.getInstance();
    var b = onlyOne.getInstance();
    var c = onlyOne.getInstance();

console.log(a==b);
console.log(b==c);
</script>